传输与通信
理解 MCP 消息在客户端与服务器之间是如何流动的:先看 JSON 消息协议本身,再看用于本地开发的 STDIO 传输,最后深入 StreamableHTTP 的复杂之处——包括它如何用 SSE 绕过 HTTP 的限制,以及何时该为了可扩展性牺牲部分功能。
JSON 消息类型
MCP(Model Context Protocol)使用 JSON 消息来处理客户端和服务器之间的通信。理解这些消息类型对于使用 MCP 至关重要,尤其是在处理不同的传输方法(如可流式传输的 HTTP 传输)时。
STDIO 传输
MCP 客户端和服务器通过交换 JSON 消息进行通信,但这些消息实际上是如何传输的呢?所使用的通信通道被称为传输(transport),实现方式有多种——从 HTTP 请求到 WebSocket,甚至是将 JSON 写在明信片上(不过最后这种方式不建议用于生产环境)。
可流式传输的 HTTP 传输
可流式传输的 HTTP 传输使 MCP 客户端能够通过 HTTP 连接连接到远程托管的服务器。与要求客户端和服务器位于同一台机器上的标准 I/O 传输不同,这种传输为任何人都可以访问的公共 MCP 服务器开辟了可能性。
深入理解 StreamableHTTP
StreamableHTTP 是 MCP 针对一个根本性问题的解决方案:某些 MCP 功能需要服务器向客户端发起请求,但 HTTP 使这一点变得具有挑战性。让我们来探讨 StreamableHTTP 如何绕过这一限制,以及您何时可能需要打破这种变通方案。
状态与 StreamableHTTP 传输
MCP 服务器中的 statelesshttp 和 jsonresponse 标志控制着服务器行为的基本方面。理解何时以及为何使用它们至关重要,尤其是当您计划扩展服务器规模或将其部署到生产环境时。